package Modelos;
import Escenario.*;

public class ModeloGeneracion {
	
	public EscenarioImpl aplicar(EscenarioImpl esc, boolean conAcelmax, double[] probCreacionTiposCond, double[] probAparcarTiposCond, double[] probCreacionTiposVeh){
		
		double numeroAlterno = Math.random();
		
		if(numeroAlterno<0.5){
		
			Integer numcarriles = esc.getCarretera().getListaCarriles().size()-1;
			Integer numcarrilalterno = (int) (Math.random()*numcarriles);
			
			CarrilNormalImpl ca = (CarrilNormalImpl)esc.getCarretera().getListaCarriles().get(numcarrilalterno);
			Integer numparcv = ca.getListaParCV().size();
			
			if(numparcv == 0){
				ParCVImpl actual = new ParCVImpl(probCreacionTiposCond, probAparcarTiposCond, probCreacionTiposVeh);
				
				if(conAcelmax){
					double amax = actual.getVehiculo().getAmax();
					actual.getEstadoActual().setAceleracion(amax);
				}
				
				ca.getListaParCV().add(actual);
				
				
			}else{
				ParCV parcvult = ca.getListaParCV().get(numparcv-1);
				double posactult = parcvult.getEstadoActual().getPosicion();
				double longitudult = parcvult.getVehiculo().getLongitud();
				
				if(longitudult<posactult){
					ParCVImpl actual = new ParCVImpl(probCreacionTiposCond, probAparcarTiposCond, probCreacionTiposVeh);
					
					actual.setSiguiente(parcvult);
					parcvult.setAnterior(actual);
					
					if(conAcelmax){
						double amax = actual.getVehiculo().getAmax();
						actual.getEstadoActual().setAceleracion(amax);
					}
					
					ca.getListaParCV().add(actual);
				}
				
			}
		}
		
		return esc;
	}
}